package com.gadgets.busi.bm02.service;

import com.gadgets.busi.bm02.dto.MaterialAddInfoDTO;
import com.gadgets.busi.bm02.dto.MaterialDictQueryDTO;
import com.gadgets.busi.bm02.dto.RecipeInfoDTO;
import com.gadgets.busi.bm02.dto.RecipeQueryDTO;
import com.gadgets.busi.bm02.pojo.MaterialDict;
import com.gadgets.busi.bm02.pojo.MaterialRecipe;
import com.gadgets.framework.common.dto.Pagination;
import com.gadgets.framework.common.exception.GadgetsServiceException;

import java.util.List;

/**
 * @author UncleXiu
 * @version V1.0.0
 * @data 2020-11-02
 *
 */
public interface IMaterialService {

    /**
     * 新增合成表信息
     * @param recipeInfoDTO                 合成表信息
     * @return                              新增记录数
     * @throws GadgetsServiceException      异常信息
     */
    void addMeterialRecipe(RecipeInfoDTO recipeInfoDTO) throws GadgetsServiceException;

    /**
     * 编辑合成表信息
     * @param recipeInfoDTO             合成表信息
     * @return                          更新后记录数
     * @throws GadgetsServiceException  异常信息
     */
    void editMeterialRecipe(RecipeInfoDTO recipeInfoDTO) throws GadgetsServiceException;

    /**
     * 查询合成表信息
     * @param recipeQueryDTO            查询条件
     * @return                          查询结果
     * @throws GadgetsServiceException  异常信息
     */
    List<MaterialRecipe> selectMaterialRecipeByCondition(RecipeQueryDTO recipeQueryDTO) throws GadgetsServiceException;

    /**
     * 分页查询物品列表
     * @param queryDTO                  查询条件
     * @param pagination                分页信息
     * @return                          查询结果
     * @throws GadgetsServiceException  异常信息
     */
    List<MaterialDict> selectMaterialDictByCondition(MaterialDictQueryDTO queryDTO, Pagination pagination) throws GadgetsServiceException;

    /**
     * 新增物品信息
     * @param materialAddInfoDTO        物品信息
     * @throws GadgetsServiceException  异常信息
     */
    void addMaterialInfo(MaterialAddInfoDTO materialAddInfoDTO) throws GadgetsServiceException;

    /**
     * 物品信息和合成表导出
     * @param targetPath 导出目标地址
     * @throws GadgetsServiceException  异常信息
     */
    public void exportMaterialAndRecipeInfo(String targetPath) throws GadgetsServiceException;

    /**
     * 物品字典拼音生成
     * @throws GadgetsServiceException  异常信息
     */
    void pinyinGenerator() throws GadgetsServiceException;

}
